"""
无论是自适应方法还是动态学习率，每当数据相似度非常高时，梯度下降并不“高效”
我们需要找到一种高效计算方式让梯度下降，这就是小批量随机梯度下降(minibatch gradient descent)

批量处理最简单的测试就是矩阵乘法
1、点积运算
2、可以一次计算一列或者一行
3、直接运算
4、分成区块矩阵
"""
import numpy as np
from datetime import datetime

A = np.zeros((256, 256))
B = np.random.rand(256, 256)
C = np.random.rand(256, 256)

# 矩阵行列相乘，点积运算：用时：0:00:00.097985
# 逐列计算A=BC 用时：0:00:00.016977
# 直接运算 用时：0:00:00.000998

# 64 大小的小批量运算: 用时：0:00:00.000998
start = datetime.now()

# for i in range(256):
#     for j in range(256):
#         A[i, j] = np.matmul(B[i, :], C[:, j])

# for j in range(256):
#     A[:, j] = np.matmul(B, C[:, j])

# A = np.matmul(B, C)

# for j in range(0, 256, 64):
#     A[:, j:j + 64] = np.matmul(B, C[:, j:j + 64])
end = datetime.now()
print(end - start)
